package com.jy.rhin.infra.exception;


import com.jy.framework.base.exception.ErrorType;
import lombok.Getter;

/**
 * @author dhl
 * <p>
 * 210** 提交集
 * 211** 文档条目
 * 212** 文件夹
 * 213** 关联关系
 * 214** 文档内容
 * 215** 其他错误
 * 216** 通知订阅错误
 * 217** 通知主题错误
 * 218** 消息验证错误
 */

@Getter
public enum RhinAggrErrorType implements ErrorType {

    /**
     * ws 异常
     */
    DOCUMEN_STORED_QUERY_PARAM_INCORRECT_FAULT("DocumentStoredQueryParamIncorrectFault", "检索健康档案查询参数错误异常"),
    DOCUMENT_STORED_QUERY_NOT_FOUND_FAULT("DocumentStoredQueryNotFoundFault", "检索健康档案资源不存在异常"),
    REGISTER_DOCUMENTSET_NOT_FOUND_FAULT("RegisterDocumentSetNotFoundFault", "注册健康档案资源不存在异常"),
    UPDATE_DOCUMENTSET_NOT_FOUND_FAULT("UpdateDocumentSetNotFoundFault", "更新健康档案不存在异常"),
    UPDATE_DOCUMENTSET_INFORMATION_INCORRECT_FAULT("UpdateDocumentSetInformationIncorrectFault", "更新健康档案信息不正确异常"),
    Terminology_QueryParamIncorrectFault("QueryParamIncorrectFault", "查询参数错误异常"),
    Terminology_ValueSetNotFoundFault("ValueSetNotFoundFault", "值域不存在异常"),
    Terminology_ConceptMapNotFoundFault("ConceptMapNotFoundFault", "值域映射不存在异常"),


    /**
     * 210** 提交集
     */
    UNIQUE_ID_REPEAT("21000", "id 或 uniqueId 有重复"),
    SUBMISSION_SET_ID_EXISTS("21001", "提交集唯一标识符已存在"),
    SUBMISSION_SET_FIELD_VALID_ERROR("21002", "提交集参数格式校验错误"),
    SUBMISSION_PATIENT_ERROR("21003", "同一个提交集中患者信息必须相同"),
    VALUE_NOT_EXIST_IN_THE_RANGE("21004", "值域中不存在该值"),
    /**
     * 211** 文档条目
     */
    ENTRY_UNIQUE_ID_EXISTS("21100", "文档条目已存在"),
    PATIENT_ID_NOT_EXISTS("21101", "患者主索引不存在，请在EMPI注册患者后重试"),
    PATIENT_INFO_VALID_ERROR("21102", "患者姓名或身份证不匹配"),
    /**
     * 214** 文档内容
     */
    DOCUMENT_ID_NOT_FOUND("21400", "文档id与文档条目id不匹配"),
    CONTENT_SIZE_OR_HASH_ERROR("21401", "文档内容size或hash错误"),
    TEXT_SIGN_ERROR("21402", "text信息签名失败"),
    DOCUMENT_CONTENT_VALID_ERR("21403", "文档内容无法解析"),
    /**
     * 215** 其他错误
     */
    PARAM_DATE_VALUE_ERROR("21503", "参数日期错误"),
    PARAM_LIST_EMPTY_ERROR("21504", "参数slot内容不可为空"),
    METHOD_NAME_ERROR("21505", "参数id内容错误"),
    DOCUMENT_REFLECTION_QUERY_ERROR("21506", "反射查询错误"),
    RESPONSE_EMPTY_ERROR("21507", "数据不存在"),
    DOCUMENT_TYPE_NULL_ERROR("21508", "文档类型为空"),
    DOCUMENT_TYPE_NOT_HANDLE("21509", "无法处理的文档类型"),

    /**
     * 216** 通知订阅错误
     */
    SUBSCRIBE_NOT_FOUNT("21601", "找不到对应的订阅记录"),
    SUBSCRIBE_UPDATE_FIELD_ERROR("21602", "订阅者/订阅主题字段不能修改"),
    SUBSCRIBE_EXISTS("21603", "不能重复订阅"),
    SUBSCRIBE_TOPIC_IS_NULL("21604", "订阅的主题不存在"),
    SUBSCRIBE_TOPIC_FILTER_NOT_NULL("21605", "订阅的主题查询函数存在时过滤条件不能为空"),
    SUBSCRIBE_TOPIC_QUERY_IS_NULL("21606", "订阅的主题预存查询函数不存在"),
    SUBSCRIBE_TOPIC_FILTER_NOT_EXIST("21607", "订阅主题的过滤条件不存在于对应主题查询函数下的过滤条件中"),
    SUBSCRIBE_TOPIC_SUBSCRIBER_IS_NULL("21607", "订阅主题的订阅者不存在"),
    SUBSCRIBE_STATUS_NOT_CANCEL("21608", "当前状态不允许取消订阅"),
    SUBSCRIBE_STATUS_CANCEL_NOT_UPDATE("21609", "取消状态不允许更新订阅记录"),
    /**
     * 217** 通知主题错误
     */
    TOPIC_EXP_EXISTS("21701", "主题表达式已存在"),
    TOPIC_QUERY_OR_FILTER_EMPTY("21702", "主题预存查询及其过滤条件不能为空"),
    TOPIC_QUERY_EXP_REPEAT("21703", "预存查询函数表达式重复"),
    TOPIC_QUERY_FILTER_EXP_REPEAT("21704", "过滤条件表达式重复"),
    TOPIC_PROPERTIES_IS_NULL("21705", "未找到主题属性字段"),
    /**
     * 218** 消息错误
     */
    RECEIVE_EXISTS("21801", "消息主键重复"),
    RECEIVE_TOPIC_NOT_FOUND("21802", "消息topic验证失败"),
    PUBLISH_MESSAGE_NOT_FOUND("21803", "找不到指定的发布消息记录"),
    MESSAGE_PARSER_ERROR("21804", "消息解析错误"),
    MESSAGE_XML_CONVERT_ERROR("21805", "消息转换xml异常"),
    MESSAGE_TYPE_IS_EXISTENT("21806", "消息通知类型不存在"),
    MESSAGE_SEND_URL_ERROR("21807", "消息通知调用地址错误"),
    MESSAGE_SEND_TYPE_IS_EXISTENT("21808", "消息通知调用类型不存在"),
    /**
     * 219** 参与者信息错误
     */
    PARTICIPANT_NOT_FOUND("21901", "主键查询数据不存在"),
    PARTICIPANT_EXISTS("21902", "数据已存在"),
    PARTICIPANT_CODE_EXISTS("21903", "标识code已存在"),
    PARTICIPANT_CODE_ROLE_ERROR("21904", "标识code与角色不匹配"),
    PARTICIPANT_PARAM_DATA_EMPTY("21905", "必填信息缺失"),
    PARTICIPANT_CODE_CONT_UPDATE("21906", "标识code不可修改"),

    /**
     * 220** common错误
     */
    OPERATOR_EMPTY("22001", "操作人获取失败"),
    ;

    private final String code;
    private final String msg;

    RhinAggrErrorType(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }


}
